import router from '@/router'

/**
 * 跳转指定路由，或返回上一级
 *
 * @param   {str}  url    指定跳转的路由
 * @param   {obj}  query  调整参数
 */
export const Back = (url, query) => {
  const routeCurr = router?.currentRoute?.value || {}
  const highRouter = routeCurr?.meta?.highlight

  // 指定路由时，跳转到指定路由
  // 存在highlight路由是，替换为highlight路由
  // 不存在默认返回 -1

  if (url && typeof url === 'string') {
    router.push({ path: url, query })
  } else if (highRouter) {
    router.replace({ path: highRouter, query })
  } else {
    router.back()
  }
}

/**
 * 根据数组或指定字符串枚举，查询数据
 *
 * @param   {array}           array     全部的枚举数据
 * @param   {array | string | 'a,b'}   values    参考值, 多个值可以传数组，或使用“,”分隔的字符串
 * @param   {string}          titleKey  映射名称对应的 字段字符传
 * @param   {string}          idKey     值对应的 字段字符传
 */
export const GetKey = (array = [], values, titleKey = 'label', idKey = 'value') => {
  let valArr = []
  let resItem = []
  let titleItem = []

  if (typeof values === 'string') {
    valArr = values?.split(',') || []
  } else if (typeof values === 'object' && values !== null) {
    valArr = values
  }

  resItem = array.filter((f) => valArr.includes(f[idKey])) || []
  titleItem = resItem.map((i) => i[titleKey]) || []

  return {
    label: titleItem.join(',') || '-',
    item: resItem
  }
}

export default {
  Back,
  GetKey
}
